#!/usr/bin/env python
# coding: utf-8

# # Problème

# ## Partrie I

# #### Question 1

# In[ ]:


#Question1
def SaisieLogiciel():
    d={}
    while True:
        des=input('designation DE Max 20 cara')
        if len des<=20:
            # d['designation']=des
            break
    d['Designation']=des

    while True:
        lic=input('licence L ou ...')
        if lic.lower() in 'lcp' and len(lic)==1:
        # if lic.lower() in {'l','c','p'}:
            break
    d['Licence']=lic

    d['Editeur']=input('donner editeur')
    
    # d['AnneeEdition']=int(input('donner annee edition'))
    while True:
        annee_str=input('donner annee edition')
        if annee_str.isdigit():break
    d['AnneeEdition']=int(annee_str)
    
    d['Version']=input('donner version')
    d['TailleDisque']=int(input('donner taille disque'))
    return d


# #### Question 2

# In[ ]:


#Question2
def AjoutLogiciel(L,X):
    L.append(X)


# #### Question 3

# In[ ]:


#Question3- 1ere methode
def ListLogicielParEditeur(L,e):
    LE=[]
    for logi in L:
        if logi['Editeur']==e:LE.append(logi)
    return tuple(LE)


# In[ ]:


#Question3- 2eme methode
def ListLogicielParEditeur(L,e):
    return tuple([logi for logi in L if logi['Editeur']==e])


# #### Question 4

# In[ ]:


#Question 4- 1ere methode
def EspaceTotalOccupe(L):
    s=0
    for logi in L:
        s+=logi['TailleDisque']
    return s


# In[ ]:


#Question 4- 2eme methode
def EspaceTotalOccupe(L):
    return sum([logi['TailleDisque'] for logi in L])


# #### Question 5

# 5- RechercheLogiciel:Une fonction qui prend en parametre une list de logiciels L et permet de retourner le rang d'un logiciel dans la listL connaissant sa designation d donee en parametre.
# si le logiciel n esxist pas on retourne -1

# In[ ]:


#Question 5- 1ere meethod
def RecherchLogiciel(L,d):
    for i in range(len(L)):
        if L[i]['Designation']==d:
            return i
    return -1


# In[ ]:


#Question 5- 2eme method
def RecherchLogiciel(L,d):
    for logi in L:
        if logi['Designation']==d:
            return L.index(logi)
    return -1


# #### Question 6

# In[ ]:


#Question6- 1ere method
def NombreLogicielCommercial(L):
    n=0
    for e in L:
        if e['Licence'].lower()=='c':n+=1
    return n


# In[ ]:


#Question6- 2eme method
def NombreLogicielCommercial(L):
    # return [e for e in L if e['Licence'] in 'cC' ]
    return len(['x' for e in L if e['Licence'].lower()=='c' ])


# ## Partrie II

# #### Question 7

# In[ ]:


#Question7
def EspaceOccupe(O):
    return EspaceTotalOccupe(O['LogInst']) 
    # return EspaceTotalOccupe(O.get('LogInst')) 


# #### Question 8

# In[ ]:


#Question8

def InstallerLogiciel(O,x)
    espaceLibre=O['CapaciteDisque']-EspaceOccupe(O)
    if espaceLibre>=x['tailleDisque']:
        AjoutLogiciel(O['LogInst'],x)
        # O['LogInst'].append(x)


# #### Question 9

# In[ ]:


# Question 9- 1ere methode
def DesinstallerLogiciel(O,d):
    i=RecherchLogiciel(O['LogInst'],d)
    if i!=-1:
        O['LogInst'].popo(i)


# In[ ]:


# Question 9- 2eme methode
def DesinstallerLogiciel(O,d):
    l=[]
    for logiciel in O['LogInst']:
        # if logiciel['designation']==d:continue
        if logiciel['designation']!=d:
            l.append(logiciel)
    O['LogInst']=l


# #### Question 10

# In[ ]:


def videOrdinateur(O):
    O['logInst']=[]
    # l.clear()

